COO Communities

The primary geographic unit of this assessment is the census tract. As is the case with many communities, the census geographies do not coincide exactly with the formal geographic boundary of the study’s three sites, and should be considered as spatial approximations of these communities.

Listed below are the geographic identifiers of the census tracts that approximate each site.

Rainier Valley
(2009)
Rainier Valley
(2015)
White Center
(2009)
White Center
(2015)
SeaTac/Tukwila
(2009)
SeaTac/Tukwila
(2015)
53033010000 53033010001 53033026900 53033026600 53033026100 53033026200
53033010300 53033010300 53033026500 53033026700 53033026200 53033027300
53033010400 53033010401 53033026600 53033026500 53033026300 53033028000
53033011000 53033011001 53033026700 53033026801 53033026400 53033028100
53033011101 53033011002 53033026801 53033026802 53033027100 53033028300
53033011102 53033011101 53033026802 53033027000 53033027200 53033028402
53033011700 53033011102 53033027000 NA 53033027300 53033028403
53033011800 53033011700 NA NA 53033028000 53033028500
53033011900 53033011800 NA NA 53033028100 53033028700
NA 53033011900 NA NA 53033028200 53033028801
NA NA NA NA 53033028300 53033028802
NA NA NA NA 53033028402 53033029101
NA NA NA NA 53033028403 53033026100
NA NA NA NA 53033028500 53033026200
NA NA NA NA 53033028700 53033026300
NA NA NA NA 53033028801 53033026400
NA NA NA NA 53033028802 53033027100
NA NA NA NA 53033029100 53033027200
NA NA NA NA NA 53033027300
NA NA NA NA NA 53033028100
NA NA NA NA NA 53033028200
NA NA NA NA NA 53033028300
NA NA NA NA NA 53033028802

To create the community approximations, the tract boundaries of each community are merged and each of the census table estimates are aggregated. In addition to combining the estimates, this method also recalculates the standard error for each census table. It should be noted that this method is only valid for census tables representing count data.1

Simple feature collection with 403 features and 180 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -122.5279 ymin: 47.08446 xmax: -121.0657 ymax: 47.78033
epsg (SRID):    NA
proj4string:    NA

Community Maps


  1. This limitation is made explicit by the acs package creator, Ezra Haber Glenn, here.

LS0tDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6DQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogIHBkZl9kb2N1bWVudDoNCiAgICBrZWVwX3RleDogeWVzDQphbHdheXNfYWxsb3dfaHRtbDogeWVzDQotLS0NCg0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1zZXR1cCwgZWNobyA9IEZBTFNFLCB3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsY29tbWVudD1GQUxTRX0NCmxpYnJhcnkocGx5cikNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHJwcm9qcm9vdCkNCmxpYnJhcnkocmdkYWwpDQpsaWJyYXJ5KHNwKQ0KbGlicmFyeShyZ2VvcykNCmxpYnJhcnkodGlncmlzKQ0KbGlicmFyeShsZWFmbGV0KQ0KbGlicmFyeShnZ3RoZW1lcykNCmxpYnJhcnkobWFncml0dHIpDQpsaWJyYXJ5KHN0cmluZ3IpDQpsaWJyYXJ5KGRvd25sb2FkZXIpDQpsaWJyYXJ5KHdlYnNob3QpDQpsaWJyYXJ5KGh0bWx0b29scykNCmxpYnJhcnkoZ3Bsb3RzKQ0KbGlicmFyeShnZ21hcCkNCmxpYnJhcnkoc2hpbnkpDQpsaWJyYXJ5KGh0bWx3aWRnZXRzKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGFjcykNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGZvcmNhdHMpDQpsaWJyYXJ5KG1pc2NnaXMpDQpsaWJyYXJ5KG9wZXJhdG9yLnRvb2xzKQ0KbGlicmFyeShsZWFmbGV0LmV4dHJhcykNCmxpYnJhcnkodmlyaWRpc0xpdGUpDQpsaWJyYXJ5KHNmKQ0Kcm9vdCA8LSBycHJvanJvb3Q6OmlzX3JzdHVkaW9fcHJvamVjdA0Kcm9vdF9maWxlIDwtIHJvb3QkbWFrZV9maXhfZmlsZSgpDQpvcHRzX2NodW5rJHNldChlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBjb21tZW50PUZBTFNFKQ0KDQpgYGANCg0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1jb2xvcnN9DQpncmVlbiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJncmVlbiJdXQ0KYmx1ZSA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJibHVlIl1dDQpvcmFuZ2UgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1sib3JhbmdlIl1dDQpyZWQgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1sicmVkIl1dDQp0ZWFsIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbInRlYWwiXV0NCnBhbF9yZ2JfNCA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnBhbF9yZ2JfNCA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnBhbF9yZ2JfNiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIsIm9yYW5nZSIsInB1cnBsZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnBhbF9yZ2JfNiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIsIm9yYW5nZSIsInB1cnBsZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnByb2pfbGlnaHRfZ3JleSA8LSBjb2wyaGV4KCJncmV5NzUiKQ0KcHJval9ncmV5IDwtIGNvbDJoZXgoImdyZXk1MCIpDQpwcm9qX2RhcmtfZ3JleSA8LSBjb2wyaGV4KCJncmV5MjUiKQ0KDQpgYGANCg0KDQojIyMgQ09PIENvbW11bml0aWVzIHstfQ0KDQpUaGUgcHJpbWFyeSBnZW9ncmFwaGljIHVuaXQgb2YgdGhpcyBhc3Nlc3NtZW50IGlzIHRoZSBbY2Vuc3VzIHRyYWN0XShodHRwczovL3d3dy5jZW5zdXMuZ292L2dlby9yZWZlcmVuY2UvZ3RjL2d0Y19jdC5odG1sKS4gQXMgaXMgdGhlIGNhc2Ugd2l0aCBtYW55IGNvbW11bml0aWVzLCB0aGUgY2Vuc3VzIGdlb2dyYXBoaWVzIGRvIG5vdCBjb2luY2lkZSBleGFjdGx5IHdpdGggdGhlIGZvcm1hbCBnZW9ncmFwaGljIGJvdW5kYXJ5IG9mIHRoZSBzdHVkeSdzIHRocmVlIHNpdGVzLCBhbmQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgX3NwYXRpYWwgYXBwcm94aW1hdGlvbnNfIG9mIHRoZXNlIGNvbW11bml0aWVzLg0KDQpMaXN0ZWQgYmVsb3cgYXJlIHRoZSBnZW9ncmFwaGljIGlkZW50aWZpZXJzIG9mIHRoZSBjZW5zdXMgdHJhY3RzIHRoYXQgYXBwcm94aW1hdGUgZWFjaCBzaXRlLg0KDQpgYGB7ciBjZW5zdXMtYWNzLWNvbW1zLWZpbGVzLCByZXN1bHRzPSJhc2lzIn0NCg0KIyBDZW5zdXMgdHJhY3QgYm91bmRhcmllcyBmb3IgdGhlIDIwMTUgZGF0YQ0KDQojIFJhaW5pZXIgVmFsbGV5DQpydiA8LSBjKCI1MzAzMzAxMDAwMSIsICI1MzAzMzAxMDMwMCIsICI1MzAzMzAxMDQwMSIsICI1MzAzMzAxMTAwMSIsICI1MzAzMzAxMTAwMiIsICI1MzAzMzAxMTEwMSIsIjUzMDMzMDExMTAyIiwgIjUzMDMzMDExNzAwIiwgIjUzMDMzMDExODAwIiwgIjUzMDMzMDExOTAwIikNCg0KIyBXaGl0ZSBDZW50ZXINCndjIDwtIGMoIjUzMDMzMDI2NjAwIiwiNTMwMzMwMjY3MDAiLCI1MzAzMzAyNjUwMCIsIjUzMDMzMDI2ODAxIiwiNTMwMzMwMjY4MDIiLCI1MzAzMzAyNzAwMCIpDQoNCiMgU2VhVGFjL1R1a3dpbGENCg0Kc3RjX2h1cyA8LSByZWFkX2Nzdihyb290X2ZpbGUoJzEtZGF0YS8zLWV4dGVybmFsL21hbnVhbC9zZWF0YWMtdHIvREVDXzEwX1NGMV9IMS9ERUNfMTBfU0YxX0gxX3dpdGhfYW5uLmNzdicpLCANCiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyhJZDIgPSBjb2xfY2hhcmFjdGVyKCkpLCBza2lwID0gMSkNCg0KdHVrX2h1cyA8LSByZWFkX2Nzdihyb290X2ZpbGUoJzEtZGF0YS8zLWV4dGVybmFsL21hbnVhbC90dWt3aWxhLXRyL0RFQ18xMF9TRjFfSDEvREVDXzEwX1NGMV9IMV93aXRoX2Fubi5jc3YnKSwgDQogICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoSWQyID0gY29sX2NoYXJhY3RlcigpKSwgDQogICAgICAgICAgICAgICAgICAgIHNraXAgPSAxKQ0KDQpzdGMgPC0gIHBhc3RlKHN1YnN0cih4ID0gc3RjX2h1cyRJZDIsMSwyKSxzdWJzdHIoeCA9IHN0Y19odXMkSWQyLDgsMTYpLHNlcCA9ICIiKQ0KDQp0dWsgPC0gIHBhc3RlKHN1YnN0cih4ID0gdHVrX2h1cyRJZDIsMSwyKSxzdWJzdHIoeCA9IHR1a19odXMkSWQyLDgsMTYpLHNlcCA9ICIiKQ0KDQpzdGN0dWsgPC0gYyhzdGMsdHVrKQ0KDQojIENlbnN1cyB0cmFjdCBib3VuZGFyaWVzIGZvciB0aGUgMjAwOSBkYXRhDQoNCmlmKCFleGlzdHMoJ2N3Jykpe2N3IDwtIHJlYWRfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jdy0yMDAwLTIwMTAucmRzJykpfQ0KDQpnZXRfR0VPSUQyMDA5IDwtIGZ1bmN0aW9uKGdlb2lkc18yMDE1LCBjdyl7DQogICAgICAgICMgYnJvd3NlcigpDQogICAgICAgIGN3ICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPSURfMjAxMCAlaW4lIGdlb2lkc18yMDE1KSAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKFdFSUdIVCA+IC4wMSkgJT4lDQogICAgICAgICAgICAgICAgZXh0cmFjdDIoJ0dFT0lEXzIwMDAnKSAlPiUgdW5pcXVlKCkNCn0NCg0KaWYoIWZpbGUuZXhpc3RzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jb28tY29tbS10ci1kZi5yZHMnKSkpew0KICAgICAgICBsaXN0KA0KICAgICAgICAgICAgICAgICdSVl8yMDA5JyA9IGdldF9HRU9JRDIwMDkocnYsY3cpLA0KICAgICAgICAgICAgICAgICdSVl8yMDE1JyA9IHJ2LA0KICAgICAgICAgICAgICAgICdXQ18yMDA5JyA9IGdldF9HRU9JRDIwMDkod2MsY3cpLA0KICAgICAgICAgICAgICAgICdXQ18yMDE1JyA9IHdjLA0KICAgICAgICAgICAgICAgICdTVEtXXzIwMDknID0gZ2V0X0dFT0lEMjAwOShzdGN0dWssY3cpLA0KICAgICAgICAgICAgICAgICdTVEtXXzIwMTUnID0gc3RjdHVrDQogICAgICAgICkgJT4lIA0KICAgICAgICAgICAgICAgIG1pc2NnaXM6OmNiaW5kX2ZpbGwoLikgJT4lDQogICAgICAgICAgICAgICAgYXNfdGliYmxlKCkgJT4lDQogICAgICAgICAgICAgICAgc2V0X2NvbG5hbWVzKA0KICAgICAgICAgICAgICAgICAgICAgICAgYygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhaW5pZXIgVmFsbGV5PGJyPigyMDA5KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWluaWVyIFZhbGxleTxicj4oMjAxNSkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpdGUgQ2VudGVyPGJyPigyMDA5KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGl0ZSBDZW50ZXI8YnI+KDIwMTUpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYVRhYy9UdWt3aWxhPGJyPigyMDA5KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWFUYWMvVHVrd2lsYTxicj4oMjAxNSkiDQogICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgKSAlPiUgDQogICAgICAgICAgICAgICAgd3JpdGVfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jb28tY29tbS10ci1kZi5yZHMnKSkNCn0NCg0KcmVhZF9yZHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL2Nvby1jb21tLXRyLWRmLnJkcycpKSAlPiUgDQogICAgICAgIGtuaXRyOjprYWJsZShjYXB0aW9uID0gIkNlbnN1cyBUcmFjdCBHRU9JRHMiKQ0KDQpgYGANCg0KVG8gY3JlYXRlIHRoZSBjb21tdW5pdHkgYXBwcm94aW1hdGlvbnMsIHRoZSB0cmFjdCBib3VuZGFyaWVzIG9mIGVhY2ggY29tbXVuaXR5IGFyZSBtZXJnZWQgYW5kIGVhY2ggb2YgdGhlIGNlbnN1cyB0YWJsZSBlc3RpbWF0ZXMgYXJlIGFnZ3JlZ2F0ZWQuIEluIGFkZGl0aW9uIHRvIGNvbWJpbmluZyB0aGUgZXN0aW1hdGVzLCB0aGlzIG1ldGhvZCBhbHNvIHJlY2FsY3VsYXRlcyB0aGUgc3RhbmRhcmQgZXJyb3IgZm9yIGVhY2ggY2Vuc3VzIHRhYmxlLiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB0aGlzIG1ldGhvZCBpcyBvbmx5IHZhbGlkIGZvciBjZW5zdXMgdGFibGVzIHJlcHJlc2VudGluZyBjb3VudCBkYXRhLl5bVGhpcyBsaW1pdGF0aW9uIGlzIG1hZGUgZXhwbGljaXQgYnkgdGhlIGBhY3NgIHBhY2thZ2UgY3JlYXRvciwgRXpyYSBIYWJlciBHbGVubiwgW2hlcmVdKGh0dHA6Ly9lZ2xlbm4uc2NyaXB0cy5taXQuZWR1L2NpdHlzdGF0ZS8pLl0NCg0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1jb21iaW5lZC1nZW9tc30NCg0KaWYoIWV4aXN0cygnYWNzX25vcm1sX3NmJykpe2Fjc19ub3JtbF9zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJy4vMS1kYXRhLzQtaW50ZXJpbS9jb28tYWNzLW5vcm1sLXNmLnJkcycpKX0NCg0KIyBOZXcgY29sdW1uczogYENPTU1VTklUWWAgYW5kIGBDT01NTVVOSVRZX0ZVTExgDQoNCnJ2NiA8LSBtYXBfY2hyKHJ2LHN0cl9zdWIsNiwxMSkNCg0Kd2M2IDwtIG1hcF9jaHIod2Msc3RyX3N1Yiw2LDExKQ0KDQpzdGN0dWs2IDwtIG1hcF9jaHIoc3RjdHVrLHN0cl9zdWIsNiwxMSkNCg0KY29vNiA8LSBjKHJ2Nix3YzYsc3RjdHVrNikNCg0KIyBBZ2dyZWdhdGlvbiBmdW5jdGlvbg0KYWdncmVnYXRlX2NvbW1zIDwtIGZ1bmN0aW9uKGNvbCl7DQogICAgICAgIA0KICAgICAgICBjbGFzcyA8LSBjb2wgJT4lIGNsYXNzKCkgJT4lIHVuaXF1ZSAlPiUgZXh0cmFjdDIoMSkNCiAgICAgICAgDQogICAgICAgICMgQ0hBUkFDVEVSIENPTFVNTlMNCiAgICAgICAgaWYoY2xhc3MgJWluJSAnY2hhcmFjdGVyJyl7TkFfY2hhcmFjdGVyXw0KICAgICAgICB9ZWxzZSANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAjIExPR0lDQUwgQ09MVU1OUyANCiAgICAgICAgICAgICAgICBpZihjbGFzcyAlaW4lICdsb2dpY2FsJyl7IE5BDQogICAgICAgICAgICAgICAgfWVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgIyBTRkMgQ09MVU1OUyANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsYXNzICVpbiUgJ3NmY19NVUxUSVBPTFlHT04nKXsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCAlPiUgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfdW5pb24gJT4lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfY2FzdCgnTVVMVElQT0xZR09OJykgJT4lIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0X2J1ZmZlciguMDAwMDAxKSAlPiUgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfY2FzdCgnTVVMVElQT0xZR09OJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFDUyBDT0xVTU5TDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsYXNzICVpbiUgJ2xpc3QnICYgZXh0cmFjdDIoY29sLDEpICU+JSBjbGFzcyAlaW4lICdhY3MnKXsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sICU+JSByZWR1Y2Uoc3VwcHJlc3NXYXJuaW5ncyhyYmluZC5hY3MpKSAlPiUgYXBwbHkoMSxzdW0pICU+JSBsaXN0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCn0NCg0KaWYoIWZpbGUuZXhpc3RzKHJvb3RfZmlsZSgnLi8xLWRhdGEvNC1pbnRlcmltL2Fjc19ub3JtbF9hbGxfZ2VvbXNfc2YucmRzJykpKXsNCiAgICAgICAgDQogICAgICAgIGFjc19ub3JtbF9jb21tc19zZiA8LSANCiAgICAgICAgICAgICAgICBhY3Nfbm9ybWxfc2YgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShDT01NVU5JVFlfRlVMTCA9IGNhc2Vfd2hlbiguJEdFT0lENiAlaW4lIHJ2NiB+ICdSYWluaWVyIFZhbGxleScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgd2M2IH4gJ1doaXRlIENlbnRlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgc3RjdHVrNiB+ICdTZWFUYWMvVHVrd2lsYScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSwNCiAgICAgICAgICAgICAgICAgICAgICAgQ09NTVVOSVRZID0gY2FzZV93aGVuKC4kR0VPSUQ2ICVpbiUgcnY2IH4gJ1JWJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgd2M2IH4gJ1dDJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgc3RjdHVrNiB+ICdTVEtXJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSkgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdChOQU1FLE5BTUVfRlVMTCxHRU9JRDYsQ09NTVVOSVRZX0ZVTEwsQ09NTVVOSVRZLGV2ZXJ5dGhpbmcoKSkgJT4lIA0KICAgICAgICAgICAgICAgIHVuZ3JvdXAgJT4lIA0KICAgICAgICAgICAgICAgIHN0X2FzX3NmKCkNCiAgICAgICAgDQogICAgICAgIGNvbW1zIDwtDQogICAgICAgICAgICAgICAgYWNzX25vcm1sX2NvbW1zX3NmICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoIWlzLm5hKENPTU1VTklUWSkpICU+JSANCiAgICAgICAgICAgICAgICB1bmNsYXNzICU+JSANCiAgICAgICAgICAgICAgICBhc190aWJibGUgJT4lIA0KICAgICAgICAgICAgICAgIHNsaWNlX3Jvd3MoJ0NPTU1VTklUWScpICU+JSANCiAgICAgICAgICAgICAgICBkbWFwKGFnZ3JlZ2F0ZV9jb21tcykgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShnZW9tZXRyeSA9IHN0X3NmYyhnZW9tZXRyeSkpICU+JSANCiAgICAgICAgICAgICAgICBzdF9hc19zZigpDQogICAgICAgIA0KICAgICAgICBhbGxfY29vIDwtIA0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9jb21tc19zZiAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKCFpcy5uYShDT01NVU5JVFkpKSAlPiUgDQogICAgICAgICAgICAgICAgdW5jbGFzcyAlPiUgDQogICAgICAgICAgICAgICAgYXNfdGliYmxlICU+JSANCiAgICAgICAgICAgICAgICBkbWFwKGFnZ3JlZ2F0ZV9jb21tcykgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShnZW9tZXRyeSA9IHN0X3NmYyhnZW9tZXRyeSkpICU+JSANCiAgICAgICAgICAgICAgICBzdF9hc19zZigpDQogICAgICAgIA0KICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmIDwtIA0KICAgICAgICAgICAgICAgIGxpc3QoYWNzX25vcm1sX2NvbW1zX3NmLCBjb21tcywgYWxsX2NvbykgJT4lIA0KICAgICAgICAgICAgICAgIHJlZHVjZShyYmluZC5zZikgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShHRU9HUkFQSFkgPSBjYXNlX3doZW4oaXMubmEoLiROQU1FKSAmICFpcy5uYSguJENPTU1VTklUWSkgfiAnY29tbXVuaXR5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiBpcy5uYSguJENPTU1VTklUWSkgfiAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnU0VBQ0NEJyB+ICdjb3VudHkgc3ViZGl2aXNpb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ0tDJyB+ICdjb3VudHknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICd0cmFjdCcpKSAlPiUgDQogICAgICAgICAgICAgICAgbXV0YXRlKE5BTUUgPSBjYXNlX3doZW4oDQogICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgLiRHRU9HUkFQSFkgJWluJSAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScgfiAnQ09PJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJENPTU1VTklUWSAlaW4lICdSVicgfiAuJENPTU1VTklUWSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJENPTU1VTklUWSAlaW4lICdXQycgfiAuJENPTU1VTklUWSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJENPTU1VTklUWSAlaW4lICdTVEtXJyB+IC4kQ09NTVVOSVRZLA0KICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IC4kTkFNRSkpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoTkFNRV9GVUxMID0gY2FzZV93aGVuKA0KICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ0NPTycgfiAnQ29tbXVuaXRpZXMgb2YgT3Bwb3J0dW5pdHknLA0KICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ1JWJyB+ICdSYWluaWVyIFZhbGxleScsDQogICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnV0MnIH4gJ1doaXRlIENlbnRlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnU1RLVycgfiAnU2VhVGFjL1R1a3dpbGEnLA0KICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IC4kTkFNRV9GVUxMKSkgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShHRU9HX0ZDVCA9IGZhY3RvcihHRU9HUkFQSFksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoJ3RyYWN0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbXVuaXR5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvdW50eSBzdWJkaXZpc2lvbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvdW50eScpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkID0gVFJVRSkpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoU0VBQ0NEX0xHTCA9IGlmX2Vsc2UoTkFNRSAlaW4lIGMoJ1NFQUNDRCcsJ0NPTycsJ1JWJywnV0MnLCdTVEtXJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQUNDRF9MR0wpKSAlPiUgDQogICAgICAgICAgICAgICAgc2VsZWN0KE5BTUU6U0VBQ0NEX0xHTCxHRU9HUkFQSFksR0VPR19GQ1QsZ2VvbWV0cnksbWF0Y2hlcygnMjAxNScpLG1hdGNoZXMoJzIwMDknKSkgDQogICAgICAgIA0KICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS80LWludGVyaW0vYWNzX25vcm1sX2FsbF9nZW9tc19zZi5yZHMnKSkNCiAgICAgICAgDQp9DQogICAgICAgIA0KYWNzX25vcm1sX2FsbF9nZW9tc19zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJy4vMS1kYXRhLzQtaW50ZXJpbS9hY3Nfbm9ybWxfYWxsX2dlb21zX3NmLnJkcycpKQ0KDQoNCmFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICBhcnJhbmdlKGZjdF9yZXYoR0VPR19GQ1QpKSAlPiUgDQogICAgICAgIHNlbGVjdChOQU1FOkdFT0dfRkNULGdlb21ldHJ5LG1hdGNoZXMoJzIwMTUnKSxtYXRjaGVzKCcyMDA5JykpICU+JSANCiAgICAgICAgc3RfYXNfc2YoKSAlPiUgDQogICAgICAgIHByaW50X3BhZ2VkX3NmDQoNCg0KYGBgDQoNCmBgYHtyIGNlbnN1cy1ub3QtYWNzLWFsbC1nZW9tc30NCiMgVGhpcyBzYXZlcyBhIHZlcnNpb24gb2YgdGhlIGFjcyBkYXRhIHRoYXQgZG9lcyBub3QgdXNlIGBhY3NgIGZvcm1hdA0KIyBUaGlzIHdpbGwgYmUgdXNlZnVsIGZvciBzdW1tYXJ5IHRhYmxlcyBhbmQgdmlzdWFsaXphdGlvbnMuDQoNCmlmKCFmaWxlLmV4aXN0cyhyb290X2ZpbGUoJy4vMS1kYXRhLzUtdGlkeS9jb28tY2Vuc3VzLW5vdC1hY3MtYWxsLXNmLnJkcycpKSl7DQogICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIHVuY2xhc3MgJT4lIA0KICAgICAgICAgICAgICAgIGFzX3RpYmJsZSgpICU+JSANCiAgICAgICAgICAgICAgICBnYXRoZXIoVEJMLEFDUyxtYXRjaGVzKCcyMDE1fDIwMDknKSkgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShFU1QgPSBtYXBfZGJsKEFDUyxlc3RpbWF0ZSkgJT4lIHJvdW5kX2FueSgxKSAlPiUgYXMuaW50ZWdlcigpKSAlPiUgDQogICAgICAgICAgICAgICAgbXV0YXRlKFRZUEUgPSAnRVNUJykgJT4lIA0KICAgICAgICAgICAgICAgIHVuaXRlKFRCTF9FU1QsVEJMLFRZUEUsc2VwID0gJ18nKSAlPiUgDQogICAgICAgICAgICAgICAgc3ByZWFkKFRCTF9FU1QsRVNUKSAlPiUgDQogICAgICAgICAgICAgICAgc2VsZWN0KC1BQ1MpICU+JSANCiAgICAgICAgICAgICAgICBzdF9hc19zZigpICU+JSANCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS81LXRpZHkvY29vLWNlbnN1cy1ub3QtYWNzLWFsbC1zZi5yZHMnKSkNCn0NCmBgYA0KDQoNCg0KIyMjIyBDb21tdW5pdHkgTWFwcyB7LX0NCmBgYHtyIGNlbnN1cy1hY3MtY29tbXMtbWFwLCBmaWcuaGVpZ2h0PTEuMjUsIGZpZy53aWR0aD0xLCAgZmlnLnNob3c9J2hvbGQnLCBkcGk9MTUwfQ0KDQojIFByaW50IENvbW11bml0eSBNYXBzDQoNCnNob3dfY29tbV9tYXAgPC0gZnVuY3Rpb24obm0sIGNvbG9yLCBmbG9hdF9kaXIpew0KICAgICAgICANCiAgICAgICAgIyBNYXAgQ2VudGVyDQogICAgICAgIA0KICAgICAgICBzdF9jZW50cm9pZF9xdCA8LSBxdWlldGx5KHN0X2NlbnRyb2lkKQ0KICAgICAgICANCiAgICAgICAgY250ciA8LSBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPR1JBUEhZICVpbiUgJ2NvbW11bml0aWVzIChtdWx0aXBsZSknKSAlPiUgDQogICAgICAgICAgICAgICAgc3RfYmJveCgpDQogICAgICAgIGhhbGZ3YXkgPC0gZnVuY3Rpb24obWF4LG1pbil7KG1heC1taW4pLzIgKyBtaW59DQogICAgICAgIA0KICAgICAgICBsbmcgPC0gY250cltbJ3htaW4nXV0NCiAgICAgICAgbGF0IDwtIGhhbGZ3YXkoY250cltbJ3ltYXgnXV0sY250cltbJ3ltaW4nXV0pDQogICAgICAgIA0KICAgICAgICBjb21tX3NwIDwtIA0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdChldmVyeXRoaW5nKCksLW1hdGNoZXMoJzIwMTV8MjAwOScpKSAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKEdFT0dSQVBIWSAlaW4lICd0cmFjdCcgJiBDT01NVU5JVFkgJWluJSBubSkgJT4lIA0KICAgICAgICAgICAgICAgIGFzKCJTcGF0aWFsIikNCiAgICAgICAgDQogICAgICAgIGNvbW1fY250X3NwIDwtIA0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdChldmVyeXRoaW5nKCksLW1hdGNoZXMoJzIwMTV8MjAwOScpKSAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKEdFT0dSQVBIWSAlaW4lICdjb21tdW5pdHknICYgQ09NTVVOSVRZICVpbiUgbm0pICAlPiUgDQogICAgICAgICAgICAgICAgbXV0YXRlKGdlb21ldHJ5ID0gc3RfY2VudHJvaWQoZ2VvbWV0cnkpKSAlPiUNCiAgICAgICAgICAgICAgICBhcygiU3BhdGlhbCIpDQogICAgICAgIA0KICAgICAgICBjb21tX2JvdW5kc19zcCA8LSANCiAgICAgICAgICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICBzZWxlY3QoZXZlcnl0aGluZygpLC1tYXRjaGVzKCcyMDE1fDIwMDknKSkgJT4lIA0KICAgICAgICAgICAgICAgIGZpbHRlcihHRU9HUkFQSFkgJWluJSAnY29tbXVuaXR5JyAmIENPTU1VTklUWSAlaW4lIG5tKSAgJT4lDQogICAgICAgICAgICAgICAgYXMoIlNwYXRpYWwiKSAlPiUgDQogICAgICAgICAgICAgICAgYXMoIlNwYXRpYWxMaW5lcyIpDQogICAgICAgIA0KICAgICAgICBtYXAgPC0gDQogICAgICAgICAgICAgICAgY29tbV9zcCAlPiUgDQogICAgICAgICAgICAgICAgbWlzY2dpczo6bXlMZmx0R3JleSgpICU+JQ0KICAgICAgICAgICAgICAgIG15TGZsdE9wdHModGlsZUxhYmVscyA9IEZBTFNFLCBmdWxsU2NyZWVuQnRuID0gRkFMU0UsIGJ1bXBUaWxlTGFiZWxzID0gRkFMU0UpICU+JSANCiAgICAgICAgICAgICAgICBhZGRQb2x5Z29ucyhzbW9vdGhGYWN0b3IgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gY29sMmhleCgid2hpdGUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgPSAuNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3IgPSBjb2xvciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eSA9IC42NQ0KICAgICAgICAgICAgICAgICkgJT4lIA0KICAgICAgICAgICAgICAgIGFkZFBvbHlsaW5lcyhkYXRhID0gY29tbV9ib3VuZHNfc3AsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBwcm9qX2RhcmtfZ3JleSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSA9IDEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodCA9IDIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtb290aEZhY3RvciA9IDApICU+JQ0KICAgICAgICAgICAgICAgIGFkZEF3ZXNvbWVNYXJrZXJzKGRhdGEgPSBjb21tX2NudF9zcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gbWFya2VyT3B0aW9ucyhvcGFjaXR5ID0gMCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSB+IE5BTUVfRlVMTCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxPcHRpb25zID0gbGFiZWxPcHRpb25zKG5vSGlkZSA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGMoMCwwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gJ2F1dG8nLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE9ubHkgPSBUUlVFKSkgJT4lIA0KICAgICAgICAgICAgICAgIHNldFZpZXcobG5nLGxhdCx6b29tID0gOSkgJT4lIA0KICAgICAgICAgICAgICAgIG1pc2NnaXM6OnN0eWxlV2lkZ2V0KHN0eWxlID0gcGFzdGUwKCJmbG9hdDoiLGZsb2F0X2RpciwiO21hcmdpbjoxcHg7IiwidGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3RleHQtc2hhZG93Oi0xcHggMCAjRkZGRkZGLDAgMXB4ICNGRkZGRkYsMXB4IDAgI0ZGRkZGRiwwIC0xcHggI0ZGRkZGRiIpKSANCg0KICAgICAgICByZXR1cm4obWFwKQ0KICAgICAgICB9DQoNCm5hbWVzIDwtIGMoJ1JWJywnV0MnLCdTVEtXJykNCg0KY29sb3JzIDwtIGMoYmx1ZSwgZ3JlZW4sIHJlZCkNCg0KZmxvYXRfZGlycyA8LSBjKCdsZWZ0JywnbGVmdCcsJ25vbmUnKQ0KDQptYXBfbGlzdCA8LSBwbWFwKGxpc3QobmFtZXMsIGNvbG9ycywgZmxvYXRfZGlycyksc2hvd19jb21tX21hcCkgDQoNCm1hcF9saXN0ICU+JSBleHRyYWN0MigxKQ0KbWFwX2xpc3QgJT4lIGV4dHJhY3QyKDIpDQptYXBfbGlzdCAlPiUgZXh0cmFjdDIoMykNCg0KDQoNCmBgYA0KDQoNCg==